<?php
/****************************************************
 * $Date:: Jun 24, 2010 6:19:39 AM					*
 * $Revision:										*
 * $Author:: duongthienduc							*
 * $Comment::										*
 ****************************************************/

class Bet_Model_Abstract {

    public function __construct(array $options = null) {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    public function setOptions(array $options) {
        $methods = get_class_methods($this);
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, $methods)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    public function getOptions($ignores = array()) {
    	$options = array();
    	foreach ($this as $field => $value) {
    		if (!array_key_exists($field, $ignores)) {
    			$options[$field] = $value;
    		}
    	}
    	return $options;
    }

	public function __set($name, $value) {
		$method = 'set' . $name;
		if (('mapper' == $name) || !method_exists($this, $method)) {
			throw new Exception('Invalid object property');
		}
		$this->$method($value);
	}

	public function __get($name) {
		$method = 'get' . $name;
		if (('mapper' == $name) || !method_exists($this, $method)) {
			throw new Exception('Invalid object property');
		}
		return $this->$method();
	}


}
?>